ê²ì ìì§ì 컎í¬ëíž ìì€í ìí€í ì², ì¥ì , 구í ìžë¶ ì¬í ë° ê³ êž êž°ì ì íìí©ëë€. ì ìžê³ ê²ì ê°ë°ì륌 ìí ì¢ í© ê°ìŽëì ëë€.
ê²ì ìì§ ìí€í ì²: 컎í¬ëíž ìì€í ì¬ìžµ ë¶ì
ê²ì ê°ë°ì ìììì ì 구조íë ê²ì ìì§ì 몰ì ê° ìê³ ë§€ë ¥ì ìž ê²œíì ë§ëë ë° ê°ì¥ ì€ìí©ëë€. ê²ì ìì§ì ê°ì¥ ìí¥ë ¥ ìë ìí€í ì² íšíŽ ì€ íëë 컎í¬ëíž ìì€í (Component System)ì ëë€. ìŽ ìí€í ì² ì€íìŒì 몚ëì±, ì ì°ì± ë° ì¬ì¬ì©ì±ì ê°ì¡°íì¬ ê°ë°ìê° ë 늜ì ìž ì»Ží¬ëížì 몚ììŒë¡ ë³µì¡í ê²ì ìí°í°ë¥Œ 구ì¶í ì ìê² í©ëë€. ìŽ êž°ì¬ë 컎í¬ëíž ìì€í , ê·ž ìŽì , 구í ê³ ë € ì¬í ë° ê³ êž êž°ì ì ëí í¬êŽì ìž í구륌 ì ê³µíë©°, ì ìžê³ ê²ì ê°ë°ì륌 ëììŒë¡ í©ëë€.
컎í¬ëíž ìì€í ìŽë 묎ììžê°?
íµì¬ì ìŒë¡, 컎í¬ëíž ìì€í (ì¢ ì¢ ìí°í°-컎í¬ëíž-ìì€í ëë ECS ìí€í ì²ì ìŒë¶)ì ììë³Žë€ ì»Ží¬ì§ì ì ì¥ë €íë ëììž íšíŽì ëë€. ê¹ì íŽëì€ ê³ìžµì ì졎íë ëì , ê²ì ê°ì²Ž(ëë ìí°í°)ë ì¬ì¬ì© ê°ë¥í 컎í¬ëíž ëŽì 캡ìíë ë°ìŽí°ì ë¡ì§ì ëŽë 컚í ìŽëë¡ ì·šêžë©ëë€. ê° ì»Ží¬ëížë ìí°í°ì ìì¹, ìží, 묌늬 ìì± ëë AI ë¡ì§ê³Œ ê°ì í¹ì 잡멎ì ëììŽë ìí륌 ëíë ëë€.
ë ê³ ìžížë¥Œ ìê°íŽ ë³Žìžì. ê°ë³ ëžëŠ(컎í¬ëíž)ì ë€ìí ë°©ììŒë¡ ê²°í©íì¬ ìëì°š, ì§, ë¡ëŽ ë± ììí ì ìë 몚ë ê²ê³Œ ê°ì ë°©ëí ë°°ìŽì ê°ì²Ž(ìí°í°)륌 ë§ë€ ì ììµëë€. ë§ì°¬ê°ì§ë¡, 컎í¬ëíž ìì€í ììë ë€ìí 컎í¬ëížë¥Œ ê²°í©íì¬ ê²ì ìí°í°ì í¹ì±ì ì ìí©ëë€.
죌ì ê°ë :
- ìí°í°(Entity): ìë ëŽì ê²ì ê°ì²Žë¥Œ ëíëŽë ê³ ì ìë³ìì ëë€. 볞ì§ì ìŒë¡ 컎í¬ëížê° ë¶ì°©ëë ë¹ ì»ší ìŽëì ëë€. ìí°í° ì첎ìë ë°ìŽí°ë ë¡ì§ìŽ í¬íšëì§ ììµëë€.
- 컎í¬ëíž(Component): ìí°í°ì ëí í¹ì ì 볎륌 ì ì¥íë ë°ìŽí° 구조ì ëë€. ìë¡ë PositionComponent, VelocityComponent, SpriteComponent, HealthComponent ë±ìŽ ììµëë€. 컎í¬ëížë ë¡ì§ìŽ ìë *ë°ìŽí°*ë§ í¬íší©ëë€.
- ìì€í (System): í¹ì 컎í¬ëíž ì¡°í©ì ê°ì§ ìí°í°ì ëíŽ ìëíë 몚ëì ëë€. ìì€í ì *ë¡ì§*ì í¬íšíë©° ìí°í°ë¥Œ ìííë©° íŽë¹ 컎í¬ëížë¥Œ êž°ë°ìŒë¡ ìì ì ìíí©ëë€. ì륌 ë€ìŽ, ë ëë§ ìì€í (RenderingSystem)ì PositionComponentì SpriteComponent륌 몚ë ê°ì§ 몚ë ìí°í°ë¥Œ ìííë©° ì§ì ë ìì¹ì ì€íëŒìŽížë¥Œ 귞늎 ì ììµëë€.
컎í¬ëíž ìì€í ì ì¥ì
컎í¬ëíž ìì€í ìí€í ì²ì ì±íì í¹í íì¥ì±, ì ì§ë³Žìì± ë° ì ì°ì± 잡멎ìì ê²ì ê°ë° íë¡ì ížì ìë§ì ìŽì ì ì ê³µí©ëë€.1. í¥ìë 몚ëì±
컎í¬ëíž ìì€í ì ë§€ì° ëªšëì ìž ì€ê³ë¥Œ ìŽì§í©ëë€. ê° ì»Ží¬ëížë í¹ì êž°ë¥ ì¡°ê°ì 캡ìííì¬ ìŽíŽ, ìì ë° ì¬ì¬ì©ìŽ ë ì¬ìì§ëë€. ìŽë¬í 몚ëì±ì ê°ë° íë¡ìžì€ë¥Œ ëšìííê³ ë³ê²œ ì ìëíì§ ìì ë¶ìì©ì ìŒìŒí¬ ìíì ì€ì ëë€.
2. ìŠê°ë ì ì°ì±
ì íµì ìž ê°ì²Ž ì§í¥ ììì ë³ííë ì구 ì¬íì ì ìíêž° ìŽë €ìŽ ê²œì§ë íŽëì€ ê³ìžµìŒë¡ ìŽìŽì§ ì ììµëë€. 컎í¬ëíž ìì€í ì íšì¬ ë í° ì ì°ì±ì ì ê³µí©ëë€. ìë¡ìŽ íŽëì€ë¥Œ ë§ë€ê±°ë Ʞ졎 íŽëì€ë¥Œ ìì í íì ììŽ ìí°í°ìì 컎í¬ëížë¥Œ ìœê² ì¶ê°íê±°ë ì ê±°íì¬ ëìì ìì í ì ììµëë€. ìŽë ë€ìíê³ ëì ìž ê²ì ìžê³ë¥Œ ë§ëë ë° í¹í ì ì©í©ëë€.
ìì: ëšìí NPCë¡ ììíë ìºëŠí°ë¥Œ ììíŽ ë³Žìžì. ê²ì íë°ì íë ìŽìŽê° ì ìŽí ì ìëë¡ ë§ë€êž°ë¡ ê²°ì íìµëë€. 컎í¬ëíž ìì€í ì ì¬ì©í멎 Ʞ볞 NPC ìœë륌 ë³ê²œíì§ ìê³ ë ìí°í°ì `PlayerInputComponent`ì `MovementComponent`륌 ê°ëší ì¶ê°í ì ììµëë€.
3. í¥ìë ì¬ì¬ì©ì±
컎í¬ëížë ì¬ë¬ ìí°í°ì ê±žì³ ì¬ì¬ì©í ì ìëë¡ ì€ê³ëììµëë€. ëšìŒ `SpriteComponent`ë ìºëŠí°ìì ë°ì¬ì²Ž, í겜 ììì ìŽë¥Žêž°ê¹ì§ ë€ìí ì íì ê°ì²Žë¥Œ ë ëë§íë ë° ì¬ì©ë ì ììµëë€. ìŽë¬í ì¬ì¬ì©ì±ì ìœë ì€ë³µì ì€ìŽê³ ê°ë° íë¡ìžì€ë¥Œ ê°ìíí©ëë€.
ìì: `DamageComponent`ë íë ìŽìŽ ìºëŠí°ì ì AI 몚ëìì ì¬ì©í ì ììµëë€. íŒíŽë¥Œ ê³ì°íê³ íšê³Œë¥Œ ì ì©íë ë¡ì§ì 컎í¬ëížë¥Œ ìì í ìí°í°ì êŽê³ììŽ ëìŒíê² ì ì§ë©ëë€.
4. ë°ìŽí° ì§í¥ ì€ê³(DOD) ížíì±
컎í¬ëíž ìì€í ì ìì°ì€ëœê² ë°ìŽí° ì§í¥ ì€ê³(DOD) ìì¹ì ë§€ì° ì í©í©ëë€. DODë ìºì íì©ë륌 ìµì ííê³ ì±ë¥ì í¥ììí€êž° ìíŽ ë©ëªšëЬì ë°ìŽí°ë¥Œ ë°°ìŽíë ê²ì ê°ì¡°í©ëë€. 컎í¬ëížë ìŒë°ì ìŒë¡ ì°êŽë ë¡ì§ ììŽ ë°ìŽí°ë§ ì ì¥íë¯ë¡ ì°ìì ìž ë©ëªšëЬ ëžë¡ì ìœê² ë°°ìŽë ì ììŽ ìì€í ìŽ ë§ì ìì ìí°í°ë¥Œ íšìšì ìŒë¡ ì²ëЬí ì ììµëë€.
5. íì¥ì± ë° ì ì§ë³Žìì±
ê²ì íë¡ì ížê° ë³µì¡íŽì§ì ë°ëŒ ì ì§ë³Žìì±ìŽ ì ì ë ì€ìíŽì§ëë€. 컎í¬ëíž ìì€í ì 몚ëì í¹ì±ì ëê·ëªš ìœëë² ìŽì€ë¥Œ êŽëЬíêž° ìœê² ë§ëëë€. í 컎í¬ëížì ëí ë³ê²œ ì¬íìŽ ìì€í ì ë€ë¥ž ë¶ë¶ì ìí¥ì ë¯žì¹ ê°ë¥ì±ìŽ ì ìŽ ë²ê·ž ë°ì ìíì ì€ì ëë€. ëí êŽì¬ì¬ì ëª íí ë¶ëЬë ìë¡ìŽ íììŽ íë¡ì ížë¥Œ ìŽíŽíê³ êž°ì¬íë ê²ì ë ìœê² ë§ëëë€.
6. ììë³Žë€ ì»Ží¬ì§ì
컎í¬ëíž ìì€í ì ê°ë ¥í ëììž ìì¹ìž "ììë³Žë€ ì»Ží¬ì§ì "ì ì§ì§í©ëë€. ììì íŽëì€ ê°ì ê°í ê²°í©ì ìì±íê³ ë¶ëªš íŽëì€ì ë³ê²œìŽ ìì íŽëì€ì ìëíì§ ìì 결곌륌 ìŽëí ì ìë "ì·šìœí êž°ë° íŽëì€" 묞ì ë¡ ìŽìŽì§ ì ììµëë€. ë°ë©Žì 컎í¬ì§ì ì ë ìê³ ë 늜ì ìž ì»Ží¬ëížë¥Œ ê²°í©íì¬ ë³µì¡í ê°ì²Žë¥Œ 구ì¶í ì ìê² íì¬ ë ì ì°íê³ ê²¬ê³ í ìì€í ì ë§ëëë€.
컎í¬ëíž ìì€í 구ííêž°
컎í¬ëíž ìì€í ì 구ííë ë°ìë ëª ê°ì§ 죌ì ê³ ë € ì¬íìŽ ììµëë€. í¹ì 구í ìžë¶ ì¬íì íë¡ê·žëë° ìžìŽì ëì íë«íŒì ë°ëŒ ë€ë¥Žì§ë§ Ʞ볞 ìì¹ì ëìŒíê² ì ì§ë©ëë€.1. ìí°í° êŽëЬ
첫 ë²ì§ž ëšê³ë ìí°í°ë¥Œ êŽëЬíêž° ìí ë©ì»€ëìŠì ë§ëë ê²ì ëë€. ìŒë°ì ìŒë¡ ìí°í°ë ì ìë GUIDì ê°ì ê³ ì ìë³ìë¡ ííë©ëë€. ìí°í° êŽëЬìë ìí°í°ë¥Œ ìì±, íꎎ ë° ì¶ì íë ìí ì í©ëë€. êŽëЬìë ìí°í°ì ì§ì êŽë šë ë°ìŽí°ë ë¡ì§ì 볎ì íì§ ìê³ ëì ìí°í° ID륌 êŽëЬí©ëë€.
ìì (C++):
class EntityManager {
public:
Entity CreateEntity() {
Entity entity = nextEntityId_++;
return entity;
}
void DestroyEntity(Entity entity) {
// Remove all components associated with the entity
for (auto& componentMap : componentStores_) {
componentMap.second.erase(entity);
}
}
private:
Entity nextEntityId_ = 0;
std::unordered_map> componentStores_;
};
2. 컎í¬ëíž ì ì¥ì
컎í¬ëížë ìì€í ìŽ ì£ŒìŽì§ ìí°í°ì êŽë šë 컎í¬ëížì íšìšì ìŒë¡ ì ê·Œí ì ìë ë°©ììŒë¡ ì ì¥ëìŽìŒ í©ëë€. ìŒë°ì ìž ì ê·Œ ë°©ìì ê° ì»Ží¬ëíž ì íì ëíŽ ë³ëì ë°ìŽí° 구조(ì¢ ì¢ íŽì ë§µ ëë ë°°ìŽ)륌 ì¬ì©íë ê²ì ëë€. ê° êµ¬ì¡°ë ìí°í° ID륌 컎í¬ëíž ìžì€íŽì€ì ë§€íí©ëë€.
ìì (ê°ë ì ):
ComponentStore positions;
ComponentStore velocities;
ComponentStore sprites;
3. ìì€í ì€ê³
ìì€í ì 컎í¬ëíž ìì€í ì íµì¬ ìŒêŸŒì ëë€. ìí°í°ë¥Œ ì²ëЬíê³ íŽë¹ 컎í¬ëížë¥Œ êž°ë°ìŒë¡ ìì ì ìííë ì± ììŽ ììµëë€. ê° ìì€í ì ìŒë°ì ìŒë¡ í¹ì 컎í¬ëíž ì¡°í©ì ê°ì§ ìí°í°ì ëíŽ ìëí©ëë€. ìì€í ì êŽì¬ ìë ìí°í°ë¥Œ ìííë©° íìí ê³ì°ìŽë ì ë°ìŽížë¥Œ ìíí©ëë€.
ìì: `MovementSystem`ì `PositionComponent`ì `VelocityComponent`륌 몚ë ê°ì§ 몚ë ìí°í°ë¥Œ ìííë©°, ìëì 겜곌 ìê°ì êž°ë°ìŒë¡ ìì¹ë¥Œ ì ë°ìŽíží ì ììµëë€.
class MovementSystem {
public:
void Update(float deltaTime) {
for (auto& [entity, position] : entityManager_.GetComponentStore()) {
if (entityManager_.HasComponent(entity)) {
VelocityComponent* velocity = entityManager_.GetComponent(entity);
position->x += velocity->x * deltaTime;
position->y += velocity->y * deltaTime;
}
}
}
private:
EntityManager& entityManager_;
};
4. 컎í¬ëíž ìë³ ë° íì ìì ì±
íì ìì ì±ì 볎ì¥íê³ ì»Ží¬ëížë¥Œ íšìšì ìŒë¡ ìë³íë ê²ì ë§€ì° ì€ìí©ëë€. í í늿곌 ê°ì 컎íìŒ íì êž°ì ìŽë íì IDì ê°ì ë°íì êž°ì ì ì¬ì©í ì ììµëë€. 컎íìŒ íì êž°ì ì ìŒë°ì ìŒë¡ ë ëì ì±ë¥ì ì ê³µíì§ë§ 컎íìŒ ìê°ì ìŠê°ìí¬ ì ììµëë€. ë°íì êž°ì ì ë ì ì°íì§ë§ ë°íì ì€ë²í€ë륌 ì ë°í ì ììµëë€.
ìì (í í늿ì ì¬ì©í C++):
template
class ComponentStore {
public:
void AddComponent(Entity entity, T component) {
components_[entity] = component;
}
T& GetComponent(Entity entity) {
return components_[entity];
}
bool HasComponent(Entity entity) {
return components_.count(entity) > 0;
}
private:
std::unordered_map components_;
};
5. 컎í¬ëíž ìì¡Žì± ì²ëЬ
ìŒë¶ ìì€í ì ìí°í°ì ëíŽ ìëíêž° ì ì í¹ì 컎í¬ëížê° 졎ì¬íŽìŒ í ì ììµëë€. ìì€í ì ì ë°ìŽíž ë¡ì§ ëŽìì íìí 컎í¬ëížë¥Œ íìžíê±°ë ë ì êµí ìì¡Žì± êŽëЬ ìì€í ì ì¬ì©íì¬ ìŽë¬í ì졎ì±ì ê°ì í ì ììµëë€.
ìì: `RenderingSystem`ì ìí°í°ë¥Œ ë ëë§íêž° ì ì `PositionComponent`ì `SpriteComponent`ê° ëªšë 졎ì¬íŽìŒ í ì ììµëë€. ë 컎í¬ëíž ì€ íëëŒë ììŒë©Ž ìì€í ì íŽë¹ ìí°í°ë¥Œ 걎ëëž ê²ì ëë€.
ê³ êž êž°ì ë° ê³ ë €ì¬í
Ʞ볞ì ìž êµ¬íì ëìŽ, ëª ê°ì§ ê³ êž êž°ì ì 컎í¬ëíž ìì€í ì êž°ë¥ê³Œ ì±ë¥ì ëì± í¥ììí¬ ì ììµëë€.1. ìí€íì (Archetypes)
ìí€íì ì 컎í¬ëížì ê³ ì í ì¡°í©ì ëë€. ëìŒí ìí€íì ì ê°ì§ ìí°í°ë ëìŒí ë©ëªšëЬ ë ìŽììì ê³µì íë¯ë¡ ìì€í ìŽ ë íšìšì ìŒë¡ ì²ëЬí ì ììµëë€. 몚ë ìí°í°ë¥Œ ìííë ëì , ìì€í ì í¹ì ìí€íì ì ìí ìí°í°ë¥Œ ìííì¬ ì±ë¥ì í¬ê² í¥ììí¬ ì ììµëë€.
2. ì²í¬ ë°°ìŽ(Chunked Arrays)
ì²í¬ ë°°ìŽì ëìŒí ì íì 컎í¬ëížë¥Œ ì²í¬ë¡ 귞룹ííì¬ ë©ëªšëЬì ì°ìì ìŒë¡ ì ì¥í©ëë€. ìŽ ë°°ìŽ ë°©ìì ìºì íì©ë륌 ê·¹ëííê³ ë©ëªšëЬ ëšíží륌 ì€ì ëë€. ê·žë¬ë©Ž ìì€í ì ìŽë¬í ì²í¬ë¥Œ íšìšì ìŒë¡ ìííë©° í ë²ì ì¬ë¬ ìí°í°ë¥Œ ì²ëЬí ì ììµëë€.
3. ìŽë²€íž ìì€í
ìŽë²€íž ìì€í ì ì¬ì©í멎 컎í¬ëížì ìì€í ìŽ ì§ì ì ìž ìì¡Žì± ììŽ ìë¡ íµì í ì ììµëë€. ìŽë²€ížê° ë°ìí멎(ì: ìí°í°ê° íŒíŽë¥Œ ì ì) êŽì¬ ìë 몚ë 늬ì€ëìê² ë©ìì§ê° ëžë¡ëìºì€ížë©ëë€. ìŽë¬í ë¶ëЬë 몚ëì±ì í¥ììí€ê³ ìí ì졎ì±ì ëì í ìíì ì€ì ëë€.
4. ë³ë ¬ ì²ëЬ
컎í¬ëíž ìì€í ì ë³ë ¬ ì²ëЬì ë§€ì° ì í©í©ëë€. ìì€í ì ë³ë ¬ë¡ ì€ííì¬ ë©í°ìœìŽ íë¡ìžì륌 íì©íê³ í¹í ë§ì ìì ìí°í°ê° ìë ë³µì¡í ê²ì ìžê³ìì ì±ë¥ì í¬ê² í¥ììí¬ ì ììµëë€. ë°ìŽí° 겜ìì íŒíê³ ì€ë ë ìì ì±ì 볎ì¥íêž° ìíŽ ì£Œì륌 êž°ìžì¬ìŒ í©ëë€.
5. ì§ë ¬í ë° ìì§ë ¬í
ìí°í°ì íŽë¹ 컎í¬ëížë¥Œ ì§ë ¬ííê³ ìì§ë ¬ííë ê²ì ê²ì ìí륌 ì ì¥íê³ ë¶ë¬ì€ë ë° íìì ì ëë€. ìŽ ê³Œì ì ìí°í° ë°ìŽí°ì ìž-ë©ëªšëЬ ííì ëì€í¬ì ì ì¥íê±°ë ë€ížìí¬ë¥Œ íµíŽ ì ì¡í ì ìë íììŒë¡ ë³ííë ê²ì í¬íší©ëë€. íšìšì ìž ì ì¥ ë° ê²ìì ìíŽ JSON ëë ë°ìŽë늬 ì§ë ¬íì ê°ì íìì ì¬ì©íë ê²ì ê³ ë €íììì€.
6. ì±ë¥ ìµì í
컎í¬ëíž ìì€í ì ë§ì ìŽì ì ì ê³µíì§ë§ ì±ë¥ì ì ìíë ê²ìŽ ì€ìí©ëë€. 곌ëí 컎í¬ëíž ì¡°í륌 íŒíê³ , ìºì íì©ë륌 ìíŽ ë°ìŽí° ë ìŽììì ìµì ííë©°, ë©ëªšëЬ í ë¹ ì€ë²í€ë륌 ì€ìŽêž° ìíŽ ê°ì²Ž íë§ê³Œ ê°ì êž°ì ì ì¬ì©íë ê²ì ê³ ë €íììì€. ìœë íë¡íìŒë§ì ì±ë¥ ë³ëª© íìì ìë³íë ë° ë§€ì° ì€ìí©ëë€.
죌ì ê²ì ìì§ì 컎í¬ëíž ìì€í
ë§ì 죌ì ê²ì ìì§ì Ʞ볞ì ìŒë¡ ëë íì¥ì íµíŽ ì»Ží¬ëíž êž°ë° ìí€í ì²ë¥Œ íì©í©ëë€. ëª ê°ì§ ìë ë€ì곌 ê°ìµëë€.1. ì ëí°(Unity)
ì ëí°ë 컎í¬ëíž êž°ë° ìí€í ì²ë¥Œ ì±íí ë늬 ì¬ì©ëë ê²ì ìì§ì ëë€. ì ëí°ì ê²ì ì€ëžì ížë 볞ì§ì ìŒë¡ `Transform`, `Rigidbody`, `Collider` ë° ì¬ì©ì ì ì ì€í¬ëŠœížì ê°ì 컎í¬ëížë¥Œ ëŽë 컚í ìŽëì ëë€. ê°ë°ìë ë°íìì 컎í¬ëížë¥Œ ì¶ê°íê³ ì ê±°íì¬ ê²ì ì€ëžì ížì ëìì ìì í ì ììµëë€. ì ëí°ë 컎í¬ëížë¥Œ ìì±íê³ êŽëЬíêž° ìí ìê°ì ížì§êž°ì ì€í¬ëŠœí êž°ë¥ì 몚ë ì ê³µí©ëë€.
2. ìžëŠ¬ìŒ ìì§(Unreal Engine)
ìžëŠ¬ìŒ ìì§ ëí 컎í¬ëíž êž°ë° ìí€í ì²ë¥Œ ì§ìí©ëë€. ìžëŠ¬ìŒ ìì§ì ì¡í°(Actor)ìë `StaticMeshComponent`, `MovementComponent`, `AudioComponent`ì ê°ì ì¬ë¬ 컎í¬ëížë¥Œ ë¶ì°©í ì ììµëë€. ìžëŠ¬ìŒ ìì§ì ëžë£šíëŠ°íž ë¹ì£ŒìŒ ì€í¬ëŠœí ìì€í ì ì¬ì©í멎 ê°ë°ìê° ì»Ží¬ëížë¥Œ íšê» ì°ê²°íì¬ ë³µì¡í ëìì ë§ë€ ì ììµëë€.
3. ê³ ë ìì§(Godot Engine)
ê³ ë ìì§ì ë žë(ìí°í°ì ì ì¬)ê° ìì(컎í¬ëížì ì ì¬)ì ê°ì§ ì ìë ì¬ êž°ë° ìì€í ì ì¬ì©í©ëë€. ììí ECSë ìëì§ë§ 컎í¬ì§ì ì ë§ì ëìŒí ìŽì 곌 ìì¹ì ê³µì í©ëë€.
êžë¡ë² ê³ ë €ì¬í ë° ëªšë² ì¬ë¡
êžë¡ë² ì¬ì©ì륌 ìí 컎í¬ëíž ìì€í ì ì€ê³íê³ êµ¬íí ë ë€ì ëªšë² ì¬ë¡ë¥Œ ê³ ë €íììì€.- íì§í(Localization): í ì€íž ë° êž°í ìì°ì íì§í륌 ì§ìíëë¡ ì»Ží¬ëížë¥Œ ì€ê³íììì€. ì륌 ë€ìŽ, íì§íë í ì€íž 묞ììŽì ì ì¥íêž° ìíŽ ë³ëì 컎í¬ëížë¥Œ ì¬ì©íììì€.
- êµì í(Internationalization): 컎í¬ëížì ë°ìŽí°ë¥Œ ì ì¥íê³ ì²ëЬí ë ë€ë¥ž ì«ì íì, ë ì§ íì ë° ë¬žì ì§í©ì ê³ ë €íììì€. 몚ë í ì€ížì ì ëìœë륌 ì¬ì©íììì€.
- íì¥ì±: ê²ììŽ êžë¡ë² ì¬ì©ì륌 ëììŒë¡ íë ê²œì° í¹í ë§ì ìì ìí°í°ì 컎í¬ëížë¥Œ íšìšì ìŒë¡ ì²ëЬí ì ìëë¡ ì»Ží¬ëíž ìì€í ì ì€ê³íììì€.
- ì ê·Œì±: ì€í¬ëа 늬ë ë° ë첎 ì ë ¥ ë°©ë²ê³Œ ê°ì ì ê·Œì± êž°ë¥ì ì§ìíëë¡ ì»Ží¬ëížë¥Œ ì€ê³íììì€.
- 묞íì 믌ê°ì±: ê²ì ìœí ìž ì ë©ì»€ëìŠì ì€ê³í ë 묞íì ì°šìŽì ì ìíììì€. ê³ ì êŽë ì íŒíê³ ê²ììŽ êžë¡ë² ì¬ì©ììê² ì í©íì§ íìžíììì€.
- ëª íí 묞ìí: ê° ì»Ží¬ëíž ë° ìì€í ì ëí ììží ì€ëª ì í¬íšíì¬ ì»Ží¬ëíž ìì€í ì ëí í¬êŽì ìž ë¬žì륌 ì ê³µíììì€. ìŽë ê² í멎 ë€ìí 배겜ì ê°ë°ìê° ìì€í ì ë ìœê² ìŽíŽíê³ ì¬ì©í ì ììµëë€.